20 REM **************************************** 30 REM * CONVERT CBM ASSEMBLER SOURCE FILE TO * 40 REM * FILE TO PAL ASSEMBLER SOURCE FILE * 50 REM * K.J.H. HILDON 03/83 * 60 REM * ======= PALVERT64 1.0 ========= * 70 REM * WORKS ON C64 WITH DISK * 80 REM * ABSOLUTELY NO COPYRIGHT RESTRICTIONS * 90 REM **************************************** 100 I$="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234" : REM I$ MUST BE 1ST VAR USED 110 I$=I$+I$+I$ : REM ESTABLISH INPUT BUFFER 120 MC=896 : REM MACH CODE START ADDR 130 REM *** STRING INPUT ROUTINE -- BY JIM BUTTERFIELD *** 140 DATA 160, 2, 177, 45, 153, 137, 0, 200, 192, 6, 208, 246, 162, 1 150 DATA 32, 198, 255, 32, 228, 255, 201, 13, 240, 15, 164, 142, 145, 140 160 DATA 200, 132, 142, 196, 139, 240, 4, 165, 144, 240, 234, 76, 204, 255 170 RESTORE : FOR J=MC TO MC+41 : READ X : POKE J, X : T=T+X : NEXT 180 IF T<>6120 THEN PRINT"TYPO IN DATA" : STOP 190 Z$=CHR$(0) : CD=8 : PD=8 : OD=8 : CN=0 : PRINT CHR$(14) 200 SA=2049 : REM START ADDR C64 210 SL=100 : REM STARTING LINE # 220 IC=10 : REM INCREMENT 230 GOSUB 270 240 PRINT : INPUT "APPEND TO EXISTING PAL FILE (Y/N)";YN$ 250 IF YN$="Y" THEN 900 260 GOSUB 360 : GOSUB 450 : GOTO 520 270 PRINT : INPUT "CBM SOURCE FILENAME";CN$ 280 PRINT TAB(20)CN"[145]" 290 INPUT " SOURCE DRIVE";CN 300 PRINT TAB(20)CD"[145]" 310 INPUT " SOURCE DEVICE#";CD 320 CN$=MID$(STR$(CN),2)+":"+CN$ 330 OPEN 1, CD, 8, CN$ : ED=CD : GOSUB 700 : CLOSE 1 340 IF E THEN PRINT EE$ : PRINT : GOTO 270 350 RETURN 360 PRINT : INPUT " NEW PAL FILENAME";PN$ 370 PRINT TAB(20)CN"[145]" 380 INPUT " DESTINATION DRIVE";PN 390 PRINT TAB(20)PD"[145]" 400 INPUT "DESTINATION DEVICE#";PD 410 PN$=MID$(STR$(PN),2)+":"+PN$ 420 OPEN 2, PD, 6, PN$ : ED=PD : GOSUB 700 : CLOSE 2 430 IF E<>62 THEN PRINT "FILE EXISTS" : PRINT : GOTO 360 440 PRINT : RETURN 450 A=SL : PRINT : PRINT TAB(20)SL"[145]" 460 INPUT " STARTING LINE #";SL 470 IF SL OR = !" : SL=A : GOTO 450 480 PRINT TAB(20)IC"[145]" 490 INPUT " LINE INCREMENT";IC 500 PRINT : RETURN 510 REM ** OPEN INPUT AND OUTPUT FILES ** 520 OPEN 1, CD, 8, CN$ 530 OPEN 2, PD, 6, PN$+",P,W" 540 A=SA : GOSUB 660 : REM OUTPUT FILE START ADDR ($0801) 550 SYS MC : SX=ST : REM INPUT LINE FROM CBM SOURCE FILE 560 A$=LEFT$(I$,PEEK(142)) 570 SA=SA+LEN(A$)+5 : REM START ADDR + LINE LEN + 5 FOR LINK,LINE,MKR 580 A=SA : GOSUB 660 : REM OUTPUT LINE LINK - HEX LO, HEX HI 590 A=SL : GOSUB 660 : REM OUTPUT LINE # - HEX LO, HEX HI 600 PRINTSL;A$ : REM ===== REMOVE FOR BETTER SPEED ====== 610 SL=SL+IC : REM INCREMENT LINE NUMBER 620 PRINT#2, A$Z$; : REM OUTPUT LINE, CHR$ ZERO 630 IF SX=0 THEN 550 640 CLOSE 2 : CLOSE 1 : GOTO 760 650 ** OUTPUT 2 HEX BYTES ** 660 PRINT#2, CHR$(A AND 255); 670 PRINT#2, CHR$(INT(A/256)); 680 RETURN 690 ** ERROR INPUT ** 700 OPEN 15, ED, 15 710 INPUT#15, E, E$, ET, ES 720 EE$=STR$(E)+","+E$+","+ STR$(ET)+","+STR$(ES) 730 CLOSE 15 740 RETURN 750 REM ** ADD MORE CBM SOURCE MODULES ** 760 PRINT 770 PRINT "([196][207] [206][207][212] EXIT WITH <[210][197][212][213][210][206]>) 775 [133]"ATNPPEND ANOTHER FILE NCMDCMDCMD";YN$ 780 [139] YN$[178]"Y" [167] 840 790 [159] 2, PD, 6, PN$[170]",A" 800 [152]2, Z$Z$; : [143] ADD END FILE MARKER ($00, $00) 810 [160] 2 : [160] 15 820 [153] "LOAD";[199](34);PN$;[199](34);","[202]([196](PD),2)"ONONON" 830 [128] 840 [141] 270 : [143] FOR NEW CBM FILE NAME 850 [141] 450 : [143] ALTER NEXT LINE NUMBER, INCREMENT 860 [159] 1, CD, 8, CN$ 870 [159] 2, PD, 6, PN$[170]",A" 880 [137] 550 : [143] GO ADD FILE 890 [143] ** APPEND CBM SOURCE TO EXISTING PAL FILE ** 900 [153] : [133] " OLD PAL FILENAME";OP$ 910 [153] [163]20)CN"ON" 920 [133] " DRIVE";OP 930 [153] [163]20)OD"ON" 940 [133] " DEVICE#";OD 950 [159] 1, OD, 8, OP$ : ED[178]OD : [141] 700 : [160] 1 960 [139] E [167] [153] EE$ : [153] : [137] 900 970 [153] : [153] [163]21)"@"OP$"ON" 980 [133] " NEW PAL FILENAME";PN$ 990 [139] [200](PN$,1)[179][177]"@" [167] 1010 1000 PN[178]OP : PD[178]OD : PN$[178]"@"[170][202]([196](PN),2)[170]":"[170][202](PN$,2) : [137] 1080 1010 [153] [163]20)CN"ON" 1020 [133] " DESTINATION DRIVE";PN 1030 [153] [163]20)PD"ON" 1040 [133] "DESTINATION DEVICE#";PD 1050 PN$[178][202]([196](PN),2)[170]":"[170]PN$ 1060 [159] 2, PD, 6, PN$ : ED[178]PD : [141] 700 : [160] 2 1070 [139] E[179][177]62 [167] [153] " FILE EXISTS" : [153] : [137] 970 1080 [153] : [153]"CREATING NEW FILE FROM ";OP$;" STAND BY..." 1090 [159] 1, OD, 8, OP$[170]",P,R" 1100 [159] 2, PD, 6, PN$[170]",P,W" 1110 [161]#1,A$ : [152]2, [199]([198](A$[170]Z$)); : [143] FILE START ADDRESS 1120 [161]#1,A$ : [152]2, [199]([198](A$[170]Z$)); 1130 [161]#1, B$, C$ : [139] ST[178]64 [167] 1230 : [143] GET LINE LINK 1140 A$[178][199]([198](B$[170]Z$)) [170] [199]([198](C$[170]Z$)) 1150 [161]#1, B$, C$ : [143] GET LINE NUMBER 1160 A$[178]A$ [170] [199]([198](B$[170]Z$)) [170] [199]([198](C$[170]Z$)) 1170 [151] MC[170]21, 0 : [143] INPUT DELIM NOW $00 1180 [158] MC 1190 A$[178]A$[170][200](I$,[194](142))[170]Z$ : [143] +Z$ TO ADD LOST MKR 1200 [152]2,A$; 1210 SA[178]SA[170][195](A$) : [143] UPDATE START ADDR 1220 [137] 1130 1230 [160] 1 1240 [151] MC[170]21, 13 : [143] INPUT DELIM BACK TO CR 1250 SL[178][198]([202](A$,3)[170]Z$)[170][198]([202](A$,4)[170]Z$)[172]256[170]IC 1260 [141] 450 : [143] ALTER NEXT LINE NUM 1270 [159] 1, CD, 8, CN$[170]",S,R" 1280 [137] 550